package com.zxy.leetcode._00100_00199._00130_00139;

/**
 * https://leetcode-cn.com/problems/single-number/
 *
 * 136. 只出现一次的数字
 * 给定一个非空整数数组，除了某个元素只出现一次以外，
 * 其余每个元素均出现两次。找出那个只出现了一次的元素。
 *
 * 思路：两两相同进行异或运算等于0，刚好抵消，最后一个就是结果了
 *
 * 标签：位运算
 */
public class Test00136 {

    public static void main(String[] args) {
        Test00136 test = new Test00136();
        int[] nums1 = {2, 2, 1};
        System.out.println(test.singleNumber(nums1) == 1);
        int[] nums2 = {4, 1, 2, 1, 2};
        System.out.println(test.singleNumber(nums2) == 4);
    }

    public int singleNumber(int[] nums) {
        if (nums == null || nums.length == 0) {
            return 0;
        }

        int a = 0;
        for (int i=0; i<nums.length; i++) {
            a ^= nums[i];
        }
        return a;
    }

}
